package com.edu.whty.dao;

import com.edu.whty.dao.base.IBaseDao;
import com.edu.whty.entity.cloud.CloudPageReq;
import com.edu.whty.entity.cloud.ResUsedReq;
import com.edu.whty.entity.cloud.TbCourseUser;
import com.edu.whty.entity.cloud.TbCourseUserScore;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface TbCourseUserMapper extends IBaseDao<TbCourseUser> {


    /**
     * 删除资源
     * @return
     */
    public int deleteCloud(Map<String, Object> param);

    /**
     * 移动资源
     * @return
     */
    public int moveCloud(Map<String, Object> param);


    public TbCourseUser getUserByCourseId(String courseId);

    /**
     * 删除资源更新时间
     * @return
     */
    public int deleteCloudUpdateRes(Map<String, Object> param);

    /**
     * 删除互动资源对应资源
     * @return
     */


    //移动资源时 更新资源时间
    public void moveCloudModifyTime(Map<String, Object> map);
    

	public TbCourseUser getById(Map map);

	public List<TbCourseUser> getUserResListByMap(Map<String, Object> map);


	public void updateBycourseResId(TbCourseUser tcUser);



	List<TbCourseUser> initCourseUserList(CloudPageReq cloudPage);

	void saveCourseUserBatch(List<TbCourseUser> list);

	void updateCourseUserBatch(List<TbCourseUser> list);

	/**
	 * 批量同步新增用户课程
	 * @param List
	 * @throws Exception
	 */
	void syncSaveCourseUserBatch(List<Map<String, Object>> list);

	/**
	 * 批量同步更新用户课程
	 * @param List
	 * @throws Exception
	 */
	void syncUpdateCourseUserBatch(List<Map<String, Object>> list);

	/**
	 * 批量同步用户课程
	 * @param List
	 * @throws Exception
	 */
	void syncSaveOrUpdateBatch(List<Map<String, Object>> list);

	/**
	 * 批量同步删除用户课程
	 * @param List
	 * @throws Exception
	 */
	void syncDeleteCourseUserBatch(List<Map<String, Object>> list);

	/**
	 * 获取待上行同步的用户课程
	 * @throws Exception
	 */
	List<Map<String, Object>> getUpSyncCourseUser();

	/**
	 * 更新待同步用户课程为已同步
	 * @throws Exception
	 */
    void finishUpSyncCourseUser() throws Exception;

    /**
	 * 根据userId查询resId列表
	 */
	List<String> getResIdListByUserId(List<String> userIdList);

	void finishUpSyncCourseUserByOrgId(String resId);

	void updateStatus(String sourceId);

	void moveUserRes(TbCourseUser courseUser);

	void deleteShangHaiRes(List<String> resIdList);
}
